package pe.edu.sistemas.postgrado.samupg.view.controller;

import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import pe.edu.sistemas.postgrado.samupg.business.service.marketing.PeriodoService;
import pe.edu.sistemas.postgrado.samupg.business.service.planificacion.FichaInscripcionService;
import pe.edu.sistemas.postgrado.samupg.business.service.planificacion.MaestriaDiplomadoService;
import pe.edu.sistemas.postgrado.samupg.domain.model.FichaInscripcion;
import pe.edu.sistemas.postgrado.samupg.domain.model.MaestriaDiplomado;
import pe.edu.sistemas.postgrado.samupg.domain.model.Usuario;

/**
 *
 * @author Marlon
 */
@ManagedBean
@Scope("request")
@Controller
public class PostularController {

    private Usuario usuario;
    private FichaInscripcion fichaInscripcion;
    private int opcionSeleccionada;
    private int opcionExtraSeleccionada;
    private List<MaestriaDiplomado> listMaestrias;
    private List<MaestriaDiplomado> listDiplomados;
    private String correo;
    @Resource
    private MaestriaDiplomadoService maestriaDiplomadoService;
    @Resource
    private PeriodoService periodoService;
    @Resource
    private FichaInscripcionService fichaInscripcionService;

    /**
     * Creates a new instance of PostularController
     */
    public PostularController() {
        usuario = new Usuario();
        fichaInscripcion = new FichaInscripcion();
        opcionSeleccionada = -1;
        opcionExtraSeleccionada = -1;
//        opcionSeleccionada = ;
//        opcionExtraSeleccionada = "";
    }

    @PostConstruct
    public void init() {
        usuario = (Usuario) FacesContext.getCurrentInstance().getExternalContext()
                .getSessionMap().get("usuarioLogueado");

        if (usuario == null) {
            usuario = new Usuario();
        } else {
            System.out.println("Usuario obtenido");
        }

        // traer maestrias y diplomados aperturados para el periodo actual
        listMaestrias = maestriaDiplomadoService.getMaestrias();
        listDiplomados = maestriaDiplomadoService.getDiplomados();
        
    }

    public void actualizarAjax() {
        
    }
    
    public String registrarPostulacionAction() {
        int opcion = (opcionExtraSeleccionada != 0)? opcionExtraSeleccionada: opcionSeleccionada;
        
        fichaInscripcion.setUsuario(usuario);
        fichaInscripcion.setPeriodo(periodoService.getPeriodoActual());
        fichaInscripcion.setMaestriaDiplomado(maestriaDiplomadoService.getxId(opcion));

        fichaInscripcionService.crearFichaInscripcion(fichaInscripcion);

        return "postularExito.jsf";
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public FichaInscripcion getFichaInscripcion() {
        return fichaInscripcion;
    }

    public void setFichaInscripcion(FichaInscripcion fichaInscripcion) {
        this.fichaInscripcion = fichaInscripcion;
    }

    public int getOpcionSeleccionada() {
        return opcionSeleccionada;
    }

    public void setOpcionSeleccionada(int opcionSeleccionada) {
        this.opcionSeleccionada = opcionSeleccionada;
    }

    public List<MaestriaDiplomado> getListMaestrias() {
        return listMaestrias;
    }

    public void setListMaestrias(List<MaestriaDiplomado> listMaestrias) {
        this.listMaestrias = listMaestrias;
    }

    public List<MaestriaDiplomado> getListDiplomados() {
        return listDiplomados;
    }

    public void setListDiplomados(List<MaestriaDiplomado> listDiplomados) {
        this.listDiplomados = listDiplomados;
    }

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public int getOpcionExtraSeleccionada() {
        return opcionExtraSeleccionada;
    }

    public void setOpcionExtraSeleccionada(int opcionExtraSeleccionada) {
        this.opcionExtraSeleccionada = opcionExtraSeleccionada;
    }
}
